//
//  WeiboTabbar.swift
//  SinaWeibo
//
//  Created by 风不会停息 on 2016/11/12.
//  Copyright © 2016年 风不会停息. All rights reserved.
//

import UIKit

class WeiboTabbar: UITabBar {

    var closure:(() -> ())?
    //按钮的加载需要在构造方法中加入，无法再layoutSubViews中使用addSubView
    override init(frame: CGRect) {
        super.init(frame: frame)
        button .addTarget(self, action: #selector(btnClick), for: .touchUpInside)
        self.addSubview(button)
    }
    //解档的方法 系统这样做有什么意义?
    //重写了构造方法 系统就需要程序员手动实现该方法
    //一旦该视图通过xib加载程序就会崩溃
    //你写好这个视图 可能别人会使用该视图
    required init?(coder aDecoder: NSCoder) {
        //默认实现报错
        //fatalError("init(coder:) has not been implemented")
        //该控件就支持手写代码和 xib来创建
        super.init(coder: aDecoder)
        self.addSubview(button)
    }
    
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        let w = UIScreen.main.bounds.width/5
        let h = self.bounds.height
        
        var index = 0
        
        //遍历subviews中的uibarbutton，重新设置frame
        for subView in subviews
        {
            if subView.isKind(of: NSClassFromString("UITabBarButton")!) {
                
                subView.frame = CGRect(x: CGFloat(index) * w, y: 0, width: w, height: h)
                //三目表达式来判断是否是第三个，空出位置
                index += (index == 1 ? 2 : 1)
            }
        }
        //设置frame不行的原因是，frame的position是从左上角开始算的~
//        button.frame = CGRect(x: self.center.x, y: h * 0.5, width: w, height: h)
        button.center = CGPoint(x: self.center.x, y: h*0.5)
        button.bounds.size = CGSize(width: w, height: h)
    
        
    }
    //懒加载button
    lazy var button:UIButton = {
        
        let btn = UIButton()
        
        btn.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add"), for: .normal)
        btn.setImage(#imageLiteral(resourceName: "tabbar_compose_icon_add_highlighted"), for: .highlighted)
        //设置背景图片
        btn.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button"), for: .normal)
        btn.setBackgroundImage(#imageLiteral(resourceName: "tabbar_compose_button_highlighted"), for: .highlighted)
        
        return btn
    }()
    //不希望外界访问，需要加上private  加上@objc是让该方法加入OC的运行机制
    @objc private func btnClick(){
        print(#function)
        closure?()
    }
  

}
